package com.example.demo.demo.invoke;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;

import java.util.HashMap;
import java.util.Map;

public class GeminiApiRequest {

    public static void main(String[] args) {
        // 1. 定义请求URL和API Key
        String url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent";
        // 强烈建议从配置文件或环境变量中读取API Key，而不是硬编码
        String apiKey = "AIzaSyBVGUvcL9GLS1YNNF4ki8s_9aTrWXBnubw"; // 替换成您的GEMINI_API_KEY

        // 2. 构建请求体 (JSON)
        // 使用Map来构建复杂的JSON结构，Hutool会自动转换为JSON字符串
        Map<String, Object> part = new HashMap<>();
        part.put("text", "写一个令我开始的故事，50字以内");

        Map<String, Object> content = new HashMap<>();
        content.put("parts", new Object[]{part});

        Map<String, Object> requestBodyMap = new HashMap<>();
        requestBodyMap.put("contents", new Object[]{content});

        // 将Map转换为JSON字符串
        String jsonBody = JSONUtil.toJsonStr(requestBodyMap);

        // 3. 使用Hutool发起POST请求
        try {
            String responseBody = HttpRequest.post(url)
                    // 设置请求头
                    .header("Content-Type", "application/json")
                    .header("X-goog-api-key", apiKey)
                    // 设置请求体
                    .body(jsonBody)
                    // 发送请求并获取响应体
                    .execute()
                    .body();

            // 4. 打印响应结果
            // 为了更美观地输出JSON，可以使用JSONUtil.formatJsonStr
            System.out.println("请求成功，响应内容：");
            System.out.println(JSONUtil.formatJsonStr(responseBody));

        } catch (Exception e) {
            System.err.println("请求失败，异常信息：");
            e.printStackTrace();
        }
    }
}